package pos.domain;

import java.util.LinkedList;
import java.util.List;

public class Usuario {
	private Gusto gustos;
	/**
	 * @uml.property name="password"
	 */
	private String password = "";
	public Usuario(Gusto gustos, String password, String codigoPostal,
			String fechaRegistro, String email, boolean privilegioAdmin,
			String nombre, Perfil perfil, List<Punto> puntos) {
		super();
		this.gustos = gustos;
		this.password = password;
		this.codigoPostal = codigoPostal;
		this.fechaRegistro = fechaRegistro;
		this.email = email;
		this.privilegioAdmin = privilegioAdmin;
		this.nombre = nombre;
		this.perfil = perfil;
		this.puntos = puntos;
	}

	private String codigoPostal=null;

	public String getCodigoPostal() {
		return codigoPostal;
	}

	public void setCodigoPostal(String codigoPostal) {
		this.codigoPostal = codigoPostal;
	}

	/**
	 * Getter of the property <tt>password</tt>
	 * 
	 * @return Returns the password.
	 * @uml.property name="password"
	 */
	public String getPassword() {
		return password;
	}

	/**
	 * Setter of the property <tt>password</tt>
	 * 
	 * @param password
	 *            The password to set.
	 * @uml.property name="password"
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/**
	 * @uml.property name="fechaRegistro"
	 */
	private String fechaRegistro;

	/**
	 * Getter of the property <tt>fechaRegistro</tt>
	 * 
	 * @return Returns the fechaRegistro.
	 * @uml.property name="fechaRegistro"
	 */
	public String getFechaRegistro() {
		return fechaRegistro;
	}

	/**
	 * Setter of the property <tt>fechaRegistro</tt>
	 * 
	 * @param fechaRegistro
	 *            The fechaRegistro to set.
	 * @uml.property name="fechaRegistro"
	 */
	public void setFechaRegistro(String fechaRegistro) {
		this.fechaRegistro = fechaRegistro;
	}

	/**
	 * @uml.property name="email"
	 */
	private String email = "";

	/**
	 * Getter of the property <tt>email</tt>
	 * 
	 * @return Returns the email.
	 * @uml.property name="email"
	 */
	public String getEmail() {
		return email;
	}

	/**
	 * Setter of the property <tt>email</tt>
	 * 
	 * @param email
	 *            The email to set.
	 * @uml.property name="email"
	 */
	public void setEmail(String email) {
		this.email = email;
	}

	/**
	 * @uml.property name="privilegioAdmin"
	 */
	private boolean privilegioAdmin;

	/**
	 * Getter of the property <tt>privilegioAdmin</tt>
	 * 
	 * @return Returns the privilegioAdmin.
	 * @uml.property name="privilegioAdmin"
	 */
	public boolean getPrivilegioAdmin() {
		return privilegioAdmin;
	}

	/**
	 * Setter of the property <tt>privilegioAdmin</tt>
	 * 
	 * @param privilegioAdmin
	 *            The privilegioAdmin to set.
	 * @uml.property name="privilegioAdmin"
	 */
	public void setPrivilegioAdmin(boolean privilegioAdmin) {
		this.privilegioAdmin = privilegioAdmin;
	}

	public Usuario(String usuario, String password, String fecha, String email,String codigoPostal) {

		this.nombre = usuario;
		this.password = password;
		fechaRegistro = fecha;
		this.email = email;
		this.codigoPostal=codigoPostal;
		privilegioAdmin = false;
		perfil = new Perfil();
	}

	/**
	 * @uml.property name="usuario"
	 */
	// en la BBDD es el nick
	private String nombre = "";

	/**
	 * Getter of the property <tt>usuario</tt>
	 * 
	 * @return Returns the usuario.
	 * @uml.property name="usuario"
	 */
	public String getNombre() {
		return nombre;
	}

	/**
	 * Setter of the property <tt>usuario</tt>
	 * 
	 * @param nombre
	 *            The usuario to set.
	 * @uml.property name="usuario"
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
			 */
	public Usuario() {
	}

	/**
	 * @uml.property name="perfil"
	 * @uml.associationEnd multiplicity="(1 1)" aggregation="composite"
	 */
	private Perfil perfil = new Perfil();

	/**
	 * Getter of the property <tt>perfil</tt>
	 * 
	 * @return Returns the perfil.
	 * @uml.property name="perfil"
	 */
	public Perfil getPerfil() {
		return perfil;
	}

	/**
	 * Setter of the property <tt>perfil</tt>
	 * 
	 * @param perfil
	 *            The perfil to set.
	 * @uml.property name="perfil"
	 */
	public void setPerfil(Perfil perfil) {
		this.perfil = perfil;
	}

	/**
	 * @uml.property name="puntos"
	 * @uml.associationEnd multiplicity="(0 -1)" ordering="true"
	 *                     inverse="usuario:Clases.domain.Punto"
	 */
	private List<Punto> puntos = new LinkedList<Punto>();

	/**
	 * Getter of the property <tt>puntos</tt>
	 * 
	 * @return Returns the puntos.
	 * @uml.property name="puntos"
	 */
	public List<Punto> getPuntos() {
		return puntos;
	}

	/**
	 * Setter of the property <tt>puntos</tt>
	 * 
	 * @param puntos
	 *            The puntos to set.
	 * @uml.property name="puntos"
	 */
	public void setPuntos(List<Punto> puntos) {
		this.puntos = puntos;
	}

	@Override
	public String toString() {
		return "Usuario [email=" + email + ", fechaRegistro=" + fechaRegistro
				+ ", nombre=" + nombre + ", password=" + password + ", perfil="
				+ perfil + ", privilegioAdmin=" + privilegioAdmin + ", puntos="
				+ puntos + "]";
	}

	public void setGustos(Gusto gustos) {
		this.gustos = gustos;
	}

	public Gusto getGustos() {
		return gustos;
	}

	

}
